import React, { Component } from 'react'

export default class Count extends Component {
  constructor() {
    super()
    // 组件的状态是组件的私有数据.但是组件的私有数据,不一定是组件的状态
    // this.xxx = 123 // xxx是组件的私有数据,但是并不是组件的状态
    this.state = { c: 0 } //state是组件的私有数据,并且是组件的状态
    // 注意: state的值要求必须是一个对象
  }
  render() {
    // render函数中可以访问this.并且this也一定是组件的实例
    console.log('render函数执行了', this.state.c)
    return (
      <div>
        <div>-</div>
        <p>{this.state.c}</p>
        <div
          onClick={() => {
            // this.xxx = this.xxx + 1
            // console.log('xxx的最新值:', this.xxx)
            // 注意: 不能直接修改state的值,因为这样改,只会把数据改了,页面还是不会重新渲染
            // this.state.c = this.state.c + 1
            // console.log('state的最新值:', this.state.c)
            // 真正修改state的方式:
            // setState的作用: 1.修改state中的数据 2. 让组件更新(组件更新了,页面就会重新渲染)
            this.setState({
              c: this.state.c + 1, //c: 1
            })
          }}
        >
          +
        </div>
      </div>
    )
  }
}
